﻿using System;
using System.Windows.Controls;
using System.Windows;
using ibba.src.noriskbo.ViewModels;
using Infragistics.Controls.Grids;

namespace ibba.src.noriskbo.views.childs
{
    public partial class ImportarGarantias : UserControl
    {
        private ImportarGarantiasViewModel _viewModel;

        const string BOTAO_CARREGAR = "BOTAO_CARREGAR";
        const string BOTAO_VALIDAR = "BOTAO_VALIDAR";
        const string BOTAO_IMPORTAR = "BOTAO_IMPORTAR";
        const string BOTAO_EXCLUIR_ERROS = "BOTAO_EXCLUIR_ERROS";

        public override string ToString()
        {
            return "Manutenção de Garantias em Lote";
        }

        public ImportarGarantias()
        {
            InitializeComponent();

            App.MainPage.barraPesquisa.CampoPesquisaVisivel = Visibility.Collapsed;
            
            lnkDownload.NavigateUri = new Uri("/noriskbo/Data/templateManutencaoGarantia.xls", UriKind.RelativeOrAbsolute);

            _viewModel = (ImportarGarantiasViewModel)LayoutRoot.DataContext;
            _viewModel.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(_viewModel_PropertyChanged);

            this.Loaded += new RoutedEventHandler(ImportarGarantias_Loaded);
        }

        void ImportarGarantias_Loaded(object sender, RoutedEventArgs e)
        {
            painelGarantidores.HiddenList = true;
            CarregarBotoes();

            if (_viewModel.HasData)
                _viewModel.Clear();
        }

        void _viewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            if (sender != null)
            {
                if (e.PropertyName == "IsValidated" ||
                    e.PropertyName == "HasError" ||
                    e.PropertyName == "CanImport")
                {
                    if (PerfilHelper.IsDigitador)
                    {
                        App.MainPage.barraMenu.AlterarVisibilidadeBotao(BOTAO_VALIDAR, !_viewModel.IsValidated);
                        App.MainPage.barraMenu.AlterarVisibilidadeBotao(BOTAO_IMPORTAR, _viewModel.HasDataForImport && _viewModel.IsValidated && !_viewModel.HasError);
                        App.MainPage.barraMenu.AlterarVisibilidadeBotao(BOTAO_EXCLUIR_ERROS, _viewModel.IsValidated && _viewModel.HasError);
                    }
                }

                if (e.PropertyName == "IsValidated")
                {
                    painelGarantidores.HiddenList = !_viewModel.IsValidated;
                }

                if (e.PropertyName == "IsBusy")
                    App.MainPage.barraMenu.VisibilityButtons = _viewModel.IsBusy ? Visibility.Collapsed : Visibility.Visible;

                //System.Diagnostics.Debug.WriteLine(e.PropertyName);
            }
        }

        private void xgDados_RowAdded(object sender, RowEventArgs e)
        {
            _viewModel.NotifyProperties();
        }

        private void xgDados_RowDeleted(object sender, RowEventArgs e)
        {
            _viewModel.NotifyProperties();
        }

        private void xgDados_RowEnteredEditMode(object sender, EditingRowEventArgs e)
        {
            if (xgDados.SelectionSettings.SelectedRows.Count > 0)
            {
                var row = (ServiceGarantia.GarantiaManualImportacao)xgDados.SelectionSettings.SelectedRows[0].Data;

                row.StatusImportacao = "";
                _viewModel.NotifyProperties();
            }
        }

        private void xgDados_SelectedRowsCollectionChanged(object sender, SelectionCollectionChangedEventArgs<SelectedRowsCollection> e)
        {
            if (xgDados.SelectionSettings.SelectedRows.Count > 0)
            {
                _viewModel.RegistroSelecionado = (ServiceGarantia.GarantiaManualImportacao)xgDados.SelectionSettings.SelectedRows[0].Data;
            }
        }

        private void CarregarBotoes()
        {
            App.MainPage.barraMenu.ClearButtons();

            App.MainPage.barraMenu.AddNewButton(BOTAO_CARREGAR, "Carregar Arquivo", Constantes.SourceImageApp.BOTAO_CARREGAR_ARQ, 0
                                    , new sl.componentes.ControlMenuBar.Botao.DelegateClick(() =>
                                    {
                                        _viewModel.Clear();
                                        _viewModel.ComandoCarregarPlanilha();
                                    }));

            App.MainPage.barraMenu.AddNewButton(BOTAO_VALIDAR, "Validar Dados", Constantes.SourceImageApp.BOTAO_VALIDAR_ARQ, 0
                                    , new sl.componentes.ControlMenuBar.Botao.DelegateClick(() =>
                                    {
                                        _viewModel.ComandoValidarDados();
                                    }));

            App.MainPage.barraMenu.AddNewButton(BOTAO_IMPORTAR, "Importar Dados", Constantes.SourceImagem.BOTAO_SALVAR, 0
                                    , new sl.componentes.ControlMenuBar.Botao.DelegateClick(() =>
                                    {
                                        _viewModel.ComandoImportarDados();
                                    }));

            App.MainPage.barraMenu.AddNewButton(BOTAO_EXCLUIR_ERROS, "Excluir Erros", Constantes.SourceImagem.BOTAO_EXCLUIR, 0
                                    , new sl.componentes.ControlMenuBar.Botao.DelegateClick(() =>
                                    {
                                        _viewModel.RemoveAllErrors(true);
                                    }));

            App.MainPage.barraMenu.AddNewButton(Constantes.SourceImagem.BOTAO_VOLTAR.ToString(), "Voltar", Constantes.SourceImagem.BOTAO_VOLTAR, 99
                                    , new sl.componentes.ControlMenuBar.Botao.DelegateClick(() =>
                                    {
                                        App.MainPage.NavigateGoBack();
                                    }));

            App.MainPage.barraMenu.AlterarVisibilidadeBotoes(false);
            App.MainPage.barraMenu.AlterarVisibilidadeBotao(BOTAO_CARREGAR, PerfilHelper.IsDigitador);
            App.MainPage.barraMenu.AlterarVisibilidadeBotao(Constantes.SourceImagem.BOTAO_VOLTAR.ToString(), true);
        }
                        
    }
}
